В главе 5 "Управляемый C++ в .NET Framework" мы ввели концепцию
атрибутов, которые уже появлялись в нескольких примерах. В этой главе мы использовали
атрибуты Serializable (Преобразуемый в последовательную форму) и Synchronization
(Синхронизация), которые предоставляются классами .NET Framework. Каркас .NET
Framework делает механизм использования атрибутов полностью расширяемым, позволяя
определять собственные произвольные атрибуты, которые могут быть добавлены к
метаданным класса. Эти пользовательские метаданные доступны благодаря механизму
отражения и могут быть использованы во время выполнения. Чтобы упростить использование
самостоятельно определенных атрибутов, можно объявить базовый класс, который
будет вызывать отражающий интерфейс прикладного программирования (API) для получения
информации из метаданных.
В примере CustomAttribute иллюстрируется использование самостоятельно созданного
атрибута InitialDirectory. InitialDirectory указывает начальный текущий каталог,
из которого запускается программа. По умолчанию текущим каталогом является тот,
в котором содержится решение, и в нашем случае это каталог С:\01\NetCpp\Chap08\CustomAttribute.